/**
 * 
 */
package edu.acatlan.unam.client.ui.controlador.editorTabla;

//Librerías de la interfaz
import java.util.ArrayList;

import edu.acatlan.unam.shared.bdoo.TColumna;

/**
 * @author jacobo
 * 
 * Esta es la interfaz para la comunicación entre el controlador del editor
 * de la tabla y la Tabla de las columnas.
 */
public interface ITablaColumna {
	/**
	 * Solicita la actualización del lienzo debido a un cambio en las columnas de las tablas
	 */
	void actualizarLienzo();
	
	/**
	 * @param indice es el índice de la columna a generar
	 * @param nom es el nombre de la columna
	 * @param tipo es el tipo de dato de la columna
	 * @param pk indica si es parte de la llave primaria
	 * @param nulo indica si permite nulos
	 * @param unico indica si los valores deben ser únicos
	 * @param ind indica si es índice
	 * @param def indica el valor por default
	 * @return una columna que se agregará al arreglo
	 */
	TColumna generarColumna(int indice, String nom, String tipo, Boolean pk, 
			Boolean nulo, Boolean unico, Boolean ind, String def);
	
	/**
	 * @param c es el nombre de la columna 
	 * @param tipo es el tipo de dato de la columna
	 * @return verdadero si es una columna válida y false en cualquier otro caso.
	 */
	boolean datosValidos(String c, String tipo);
	
	/**
	 * @return las columnas de la tabla.
	 */
	ArrayList<TColumna> getColumnas();
	
	/**
	 * @param indice es el índice de la columna a eliminar
	 */
	void eliminarColumna(int indice);
}
